package com.itheima.service.db;

import com.itheima.domain.db.*;

import java.util.List;

/**
 * @author Guanxing
 * @date 2021/10/8
 */
public interface TestSoulService {
    //查询所有问卷
    List<Questionnaire> findQuestionnaireList();

    //根据问卷id查询问题集合
    List<SoulQuestion> findSoulQuestionListByQuestionnaireId(Long id);

    //根据问题id查询选项集合
    List<SoulQuestionOption> findSoulQuestionOptionListByQuestionId(Long id);

    //根据问卷id查询锁状态
    QuestionUserLock findQuestionUserLockByQuestionnaireId(Long id);

    //保存或修改问卷
    void saveOrUpdateQuestionnaire(Questionnaire questionnaire);

    //查询出来  问卷
    List<Questionnaire> selectListQuestionnaire();

    //跟据问卷id查询问题
    List<SoulQuestion> selectquestionList(Long id);

    //根据问题id查询出选项
    List<SoulQuestionOption> selectQuestionOptionList(Long id);

    //根据 试卷编号  选项编号  查询分数
    Integer findFenShu(String questionId, String optionId);

    //根据分数范围返回报告id
    String findReportId(Integer fenshu);

    //根据报告id查询报告
    QuestionnaireResult findReportById(String id);

    //查询报告表中   类型相同的人的id
    List<Long> findUserIdByConclusion(String content);

    //存储历史报告
    void saveLastReport(QuestionnaireReport questionnaireReport);

    // //根据答案的id查询   是那套试卷
    Long findQuestionnaireId(String questionId);

    //查询试卷等级
    String findQuestionnaireLevel(Long questionnaireId);

    //保存或修改问题
    void saveOrUpdateSoulQuestion(SoulQuestion question);

    //保存或修改选项
    void saveOrUpdateSoulQuestionOption(SoulQuestionOption option);

    //根据问卷id查询问卷对象
    Questionnaire findQuestionnaireById(Long id);

    //查询最新的报告的conclusion
    String findLastReportId(Long id, String level);

    //根据报告的内容查询报告的id
    String findLastReportIdBy(String conclusion);

    //保存题目
    void saveSoulQuestion(SoulQuestion soulQuestion);

    //添加题目
    void saveSoulQuestionOption(SoulQuestionOption soulQuestionOption);

    //保存问卷
    Long saveQuestionnaire(Questionnaire questionnaire);

    //保存锁表
    void saveQuestionUserLock(QuestionUserLock questionUserLock);

    //删除选项
    void deleteOptionById(Long id);

    //删除问题
    void deleteQuestion(Long questionId);

    //删除问卷
    void deleteByQuestionnaireId(Long questionnaireId);
}
